import axios from 'axios'
import { API_CONFIG } from '../config/wms-config.js'

// 动态基础配置，支持从 mdye.env.config 注入（变量id：apiAddress）
const BASE_CONFIG = {
  baseURL: undefined,
  timeout: 10000
}

const http = axios.create(BASE_CONFIG)

http.interceptors.request.use(
  config => {
    // 在发送前动态注入 baseURL 和 headers（避免模块初始化过早读取）
    config.baseURL = API_CONFIG.baseURL
    if (!config.headers) config.headers = {}
    // 仅设置内容类型，其余参数由各调用方放入 body
    config.headers['Content-Type'] = 'application/json'
    console.log('发送请求:', config)
    console.log('请求URL:', config.url)
    console.log('请求数据:', config.data)
    return config
  },
  error => {
    console.error('请求拦截器错误:', error)
    return Promise.reject(error)
  }
)

http.interceptors.response.use(
  response => {
    console.log('HTTP响应:', response)
    const { data } = response
    console.log('响应数据:', data)
    
    // 检查明道云API的响应格式
    if (data && typeof data === 'object') {
      // 明道云API错误码检查：error_code = 1 表示成功，其他值表示错误
      if (data.error_code !== undefined) {
        if (data.error_code !== 1) {
          const errorMsg = data.error_msg || data.msg || `明道云API错误，错误码: ${data.error_code}`
          console.error('明道云API错误:', errorMsg)
          throw new Error(errorMsg)
        }
        // error_code = 1 表示成功，返回数据
        console.log('明道云API调用成功')
        return data
      }
      
      // 如果有success字段，检查它
      if (data.hasOwnProperty('success')) {
        if (!data.success) {
          throw new Error(data.message || data.msg || '请求失败')
        }
        return data
      }
      
      // 如果都没有，直接返回数据
      return data
    }
    
    throw new Error('响应数据格式错误')
  },
  error => {
    console.error('网络请求错误:', error)
    if (error.response) {
      console.error('响应状态:', error.response.status)
      console.error('响应数据:', error.response.data)
    }
    throw error
  }
)

export default http